var postPath = '/gdp';
var notyf = new Notyf();

$(function () {
    $('.portlet-body').css({"minHeight": $(window).height() - 90 + 'px', 'overflowY': 'auto'});

    //数据列表
    $("#tb_dataList").bootstrapTable({
        url: postPath + '/system/user/getUserInfoList',
        queryParams: queryParams,
        detailView: true,//父子表
        undefinedText: '-',
        pagination: true, // 分页
        striped: true, // 是否显示行间隔色
        cache: false, // 是否使用缓存
        singleSelect: true,
        pageList: [5, 10, 20],
        uniqueId: 'userId', // 每一行的唯一标识
        sidePagination: 'server', // 服务端处理分页
        responseHandler: function (res) {
            return {
                total: res.data.total, //总页数
                rows: res.data.rows //数据
            };
        },
        columns: [
            {
                title: '登录名',
                field: 'loginname', // 字段
                align: 'center', // 对齐方式（左 中 右）
                valign: 'middle', //
                sortable: false
            },
            {
                title: '用户名',
                field: 'username',
                align: 'center',
                valign: 'middle',
                sortable: false
            },
            {
                title: '角色',
                field: 'role',
                align: 'center',
                valign: 'middle',
                sortable: false,
                formatter: function (value, row, index) {
                    return value === 'ADMIN' ? '管理员' : '用 户';
                }
            },
            {
                title: '授权码',
                field: 'authorizationCode',
                align: 'center',
                valign: 'middle',
                width: 450,
                sortable: false
            }, {
                title: '操作',
                field: 'option',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return "<button class='btn btn-default btn-sm' title='编辑' onclick='editFunc(\"" + row.userId + "\");'><i class='fa fa-edit'></i></button>" +
                        "<button class='btn btn-default btn-sm' title='删除' onclick='deleteFunc(\"" + row.loginname + "\");'><i class='fa fa-times'></i></button>" +
                        "<button class='btn btn-default btn-sm'  onclick='resetUserInfo(\"" + row.userId + "\",\"authorizationCode\");'>重置授权码</button>" +
                        "<button class='btn btn-default btn-sm'  onclick='resetUserInfo(\"" + row.userId + "\",\"password\");'>重置密码</button>";

                }
            }
        ],
        onExpandRow: function (index, row, $detail) {
            var cur_table = $detail.html('<table></table>').find('table');
            $(cur_table).bootstrapTable({
                url: postPath + "/system/sysProject/getProjectToUser?loginname=" + row.loginname,
                undefinedText: '-',
                pagination: false, // 分页
                striped: true, // 是否显示行间隔色
                cache: false, // 是否使用缓存
                toolbar: "",// 指定工具栏
                showColumns: false, // 显示隐藏列
                showRefresh: false, // 显示刷新按钮
                uniqueId: "pcode", // 每一行的唯一标识
                columns: [{
                    title: '项目编码',
                    field: 'pcode',
                    align: 'center',
                    valign: 'middle',
                    sortable: false
                }, {
                    title: '项目名称',
                    field: 'pname', // 字段
                    align: 'center', // 对齐方式（左 中 右）
                    valign: 'middle', //
                    sortable: false
                }, {
                    title: '项目说明',
                    field: 'pdesc',
                    align: 'center',
                    valign: 'middle',
                    sortable: false
                }]
            });
        }
    });


    $('#role').on('change', function () {
        if ($('#role').selectpicker('val') === 'ADMIN') {
            $('#project-group').hide();
        } else {
            $('#project-group').show();
            $('#project').selectpicker('val', []);
        }
        $('#project').selectpicker('refresh');
    });

    //添加操作
    $("#btn_add").click(function () {
        $("#EditContent").modal('show');
    });
    // 模态框隐藏事件
    $('#EditContent').on('hidden.bs.modal', function (e) {
        $('#form-data')[0].reset();
        $('#userId').val('');
        $('#loginname').attr('readonly', false);
        $('.selectpicker').selectpicker('refresh');
    });

    //查询操作
    $('#btn_Search').click(function () {
        $('#tb_dataList').bootstrapTable('refresh');
    });

    //刷新操作
    $('#btn_ref').click(function () {
        $('#tb_dataList').bootstrapTable('refresh');
    });

    // 获取项目列表
    Utils.$ajaxHttp('sysprjService/getProjectList', '', function (result) {
        var projectList = [];
        $.each(result, function (index, item) {
            projectList.push('<option value="' + item.id + '">' + item.name + '</option>');
        });
        $('#project').html(projectList.join(' '));
        $('#project').selectpicker('refresh');
    });

    // 保存事件
    $('#form-data').on('submit', function () {
        var data = {};
        $(this)
            .serializeArray()
            .map(function (item) {
                data[item.name] = data[item.name] ? data[item.name] + ',' + $.trim(item.value) : $.trim(item.value);
            });
        data['project'] = $('#project').selectpicker('val');

        // 验证登录名是否为空
        if (data['loginname'] === '') {
            notyf.alert("请输入登录名");
            return false;
        } else if (!/[a-z]/.test(data['loginname'])) {
            notyf.alert("登录名只能是小写字母!");
            return false;
        }

        // 验证用户名是否为空
        if ($.trim(data['username']) === '') {
            notyf.alert("请输入用户名");
            return;
        }
        var url = $.trim(data['userId']) === '' ? 'addUser' : 'updateUser';
        Utils.$ajaxHttp('user/' + url, JSON.stringify(data), function (res) {
            if (!res.success) {
                return notyf.alert(res.msg);
            }
            $("#EditContent").modal('hide');
            $('#tb_dataList').bootstrapTable('refresh');
            return notyf.confirm(res.msg);
        }, 'POST');

        return false;
    });
});

var Utils = {
    $ajaxHttp: function (url, data, func, method) {
        method = method || 'GET';
        $.ajax({
            url: postPath + '/system/' + url,
            method: method,
            data: data,
            dataType: 'json',
            contentType: 'application/json',
        }).done(function (result) {
            func && func(result);
        });
    }
}

/**查询条件与分页数据 */
function queryParams(pageReqeust) {
    var temp = {
        order: pageReqeust.order,
        pageNo: pageReqeust.offset / pageReqeust.limit + 1,
        pageSize: pageReqeust.limit,
        seachTxt: $('#seachTxt').val()
    };
    return temp;
}

/**
 * 编辑方法
 */
function editFunc(guid) {
    Utils.$ajaxHttp('user/getUserInfoByUserId/' + guid, null, function (res) {
        if (res.success) {
            var data = res.data;
            $('#userId').val(data.userId);
            $('#loginname').attr('readonly', true).val(data.loginname);
            $('#username').val(data.username);
            $('#role').selectpicker('val', data.role).trigger('change');
            $('#project').selectpicker('val', data.project);
            $('.selectpicker').selectpicker('refresh');
            return $("#EditContent").modal('show')
        }
        notyf.alert(res.msg);
    }, 'GET');
}

/**
 * 删除方法
 */
function deleteFunc(loginname) {
    bootbox.confirm('确认删除该用户?', function (result) {
        if (result) {
            Utils.$ajaxHttp('user/deleteUser/' + loginname, null, function (res) {
                if (res.success) {
                    $('#tb_dataList').bootstrapTable('refresh');
                    return notyf.confirm(res.msg);
                }
                notyf.alert(res.msg);
            }, 'GET');
        }
    });
}

/**
 * 重置用户信息
 */
function resetUserInfo(guid, mark) {
    var confirmTitle = mark === 'authorizationCode' ? '授权码' : '密码';
    bootbox.confirm('确认重置' + confirmTitle + '?', function (result) {
        if (result) {
            Utils.$ajaxHttp('user/resetUserInfo', JSON.stringify({
                userId: guid,
                mark: mark
            }), function (res) {
                if (res.success) {
                    $('#tb_dataList').bootstrapTable('refresh');
                    return notyf.confirm("重置" + confirmTitle + "成功~ " + res.msg);
                }
                notyf.alert("重置" + confirmTitle + "异常！");
            }, 'POST');
        }
    });
}
